// model包定义了核心业务模型
package model

import (
	"context"
)

// RefreshTokenRequest 刷新令牌请求参数结构体
// 定义了刷新令牌API所需的请求参数
type RefreshTokenRequest struct {
	RefreshToken string `form:"refreshToken" binding:"required"` // 刷新令牌, 必填
}

// RefreshTokenResponse 刷新令牌响应结构体
// 定义了刷新令牌API的返回数据
type RefreshTokenResponse struct {
	AccessToken  string `json:"accessToken"`  // 新的访问令牌
	RefreshToken string `json:"refreshToken"` // 新的刷新令牌
}

// RefreshTokenService 刷新令牌用例接口
// 定义了处理刷新令牌逻辑的业务方法
type RefreshTokenService interface {
	// GetUserByID 通过用户ID获取用户信息
	GetUserByID(c context.Context, id string) (User, error)
	// CreateAccessToken 创建新的访问令牌
	CreateAccessToken(user *User, secret string, expiry int) (accessToken string, err error)
	// CreateRefreshToken 创建新的刷新令牌
	CreateRefreshToken(user *User, secret string, expiry int) (refreshToken string, err error)
	// ExtractIDFromToken 从令牌中提取用户ID
	ExtractIDFromToken(requestToken string, secret string) (string, error)
}
